#ifndef _HCC_ERROR_CODE_MID_SCC_LMU_ERROR_H_
#define _HCC_ERROR_CODE_MID_SCC_LMU_ERROR_H_

#include "ofc/ofc_types.h"
#include "hcc/hcc_error_code.h"
#include "hcc/hcc_error_code_mid.h"

#ifdef __cplusplus
extern "C" {
#endif

// 不含行号的错误码生成
#define HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(error_code) (int)HCC_MAKE_MID_WARE_ERROR(kHccMidWareGnssUpgrade, error_code, HCC_ERROR_LEVEL_ERROR)
// 含行号的错误码生成
#define HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(error_code) (int)HCC_ERROR(HCC_MAKE_MID_WARE_ERROR(kHccMidWareGnssUpgrade, error_code, HCC_ERROR_LEVEL_ERROR))


/**
 * 定位模块升级:（需要重新生成）
 */
enum TSccLmuErrorCodeEnumTag
{
	kSccLmuErrorSuccess	=	HCC_ERROR_SUCCESS,			///< 成功,没有错误
	kSccLmuErrorComOpenFail	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(1),			///<串口打开失败,串口被占用或不存在
	kSccLmuErrorFilePath	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(2),			///<文件路径错误
	kSccLmuErrorFormat	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(3),			///<文件格式错误
	kSccLmuErrorBadData	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(4),			///<数据错误
	kSccLmuErrorBaudrate	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(5),			///<升级模块波特率不支持
	kSccLmuErrorFileType	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(6),			///<文件类型错误
	kSccLmuErrorFileLenth	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(7),			///<文件长度超出，必须小于208KB
	kSccLmuErrorFileVer	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(8),			///<程序代号或版本号错误
	kSccLmuErrorBaseBand	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(9),			///<固件基带ID不匹配
	kSccLmuErrorSelf	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(10),			///<自举代码ID不匹配
	kSccLmuErrorNavi	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(11),			///<导航代码ID不匹配
	kSccLmuErrorCodeData	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(12),			///<接收到的固件数据错误
	kSccLmuErrorCodeBurning	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(13),			///<固件代码烧写错误
	kSccLmuErrorCodeVerify	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(14),			///<固件代码验证错误
	kSccLmuErrorPacketSmall	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(15),			///<数据包长度过小,小于 3 字节
	kSccLmuErrorPacketLarge	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(16),			///<数据包长度过大，大于 4105 字节
	kSccLmuErrorCrc	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(17),			///<数据包校验和错误
	kSccLmuErrorPacketTag	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(18),			///<没有接收到包尾
	kSccLmuErrorPacketFiveTimes	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(19),			///<连续出现 5 次以上错误数据包，结束升级流程
	kSccLmuErrorInterval	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(20),			///<数据包内部字符间隔时间超过 10ms 的情况大于 20 次
	kSccLmuErrorPacketNo	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(21),			///<帧序号错误
	kSccLmuErrorFileOpen	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(22),			///<文件打开错误
	kSccLmuErrorTimeOut	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(23),			///<模块应答超时
	kSccLmuErrorNullObject	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(24),			///<空对象
	kSccLmuErrorModuleMatch	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(25),			///<模块匹配错误
	kSccLmuErrorByStop	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(26),			///<调用方主动停止升级
	kSccLmuErrorUpgradeTimeout	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(27),			///<升级时间超时
	kSccLmuErrorUnknown	=	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR(99),			///<未知错误
};
typedef enum TSccLmuErrorCodeEnumTag TSccLmuErrorCodeEnum;


typedef Int32 TSccLmuErrorCodeEnumLine;
#define kSccLmuErrorSuccessLine	HCC_ERROR_SUCCESS	///< 成功,没有错误
#define kSccLmuErrorComOpenFailLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(1)	///<串口打开失败,串口被占用或不存在
#define kSccLmuErrorFilePathLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(2)	///<文件路径错误
#define kSccLmuErrorFormatLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(3)	///<文件格式错误
#define kSccLmuErrorBadDataLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(4)	///<数据错误
#define kSccLmuErrorBaudrateLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(5)	///<升级模块波特率不支持
#define kSccLmuErrorFileTypeLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(6)	///<文件类型错误
#define kSccLmuErrorFileLenthLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(7)	///<文件长度超出，必须小于208KB
#define kSccLmuErrorFileVerLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(8)	///<程序代号或版本号错误
#define kSccLmuErrorBaseBandLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(9)	///<固件基带ID不匹配
#define kSccLmuErrorSelfLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(10)	///<自举代码ID不匹配
#define kSccLmuErrorNaviLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(11)	///<导航代码ID不匹配
#define kSccLmuErrorCodeDataLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(12)	///<接收到的固件数据错误
#define kSccLmuErrorCodeBurningLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(13)	///<固件代码烧写错误
#define kSccLmuErrorCodeVerifyLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(14)	///<固件代码验证错误
#define kSccLmuErrorPacketSmallLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(15)	///<数据包长度过小,小于 3 字节
#define kSccLmuErrorPacketLargeLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(16)	///<数据包长度过大，大于 4105 字节
#define kSccLmuErrorCrcLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(17)	///<数据包校验和错误
#define kSccLmuErrorPacketTagLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(18)	///<没有接收到包尾
#define kSccLmuErrorPacketFiveTimesLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(19)	///<连续出现 5 次以上错误数据包，结束升级流程
#define kSccLmuErrorIntervalLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(20)	///<数据包内部字符间隔时间超过 10ms 的情况大于 20 次
#define kSccLmuErrorPacketNoLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(21)	///<帧序号错误
#define kSccLmuErrorFileOpenLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(22)	///<文件打开错误
#define kSccLmuErrorTimeOutLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(23)	///<模块应答超时
#define kSccLmuErrorNullObjectLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(24)	///<空对象
#define kSccLmuErrorModuleMatchLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(25)	///<模块匹配错误
#define kSccLmuErrorByStopLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(26)	///<调用方主动停止升级
#define kSccLmuErrorUpgradeTimeoutLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(27)	///<升级时间超时
#define kSccLmuErrorUnknownLine	HCC_MAKE_MID_SCC_LMU_ERROR_ERROR_LINE(99)	///<未知错误

#ifdef __cplusplus
}  // extern "C"
#endif

#endif // _HCC_ERROR_CODE_MID_SCC_LMU_ERROR_H_
/**
 * @
 */
